package com.bbva.kyfb.firmas.servicios;

import org.apache.cxf.jaxrs.client.WebClient;

import com.bbva.jee.arq.spring.core.contexto.ArqSpringContext;
import com.bbva.jee.arq.spring.core.log.I18nLog;
import com.bbva.jee.arq.spring.core.log.I18nLogFactory;
import com.bbva.jee.arq.spring.core.util.excepciones.PropiedadNoEncontradaExcepcion;
import com.bbva.kyfb.kyfbdto.firmas.fachada.v01.DeletedFilesResponse;
import com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoFileAuditRequest;
import com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoFileAuditResponse;
import com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoFileRequest;
import com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoFileResponse;
import com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoToDeleteRequestMaking;

public class ServicioFicherosConfeccionV01Impl implements
		ServicioFicheroConfeccionV01 {
	
	String baseAddress = null;
	String pathServicioFicherosConfeccionV01 = "/v01/ServicioFConfeccion/"; 
	String pathGetComponentesConfeccionReferenciaV01 = "confeccion/infoConfecRefer/";
	String pathDeleteComponenteConfeccion = "confeccion/deleteCompConf/";
	String pathGetAuditoriaComponenteConfeccion = "confeccion/audCompConf/";
	
	/** Variable LOG. */
	private static final I18nLog LOG = I18nLogFactory.getLogI18n(ServicioFicherosConfeccionV01Impl.class);
	
	/**
	 * Constructor
	 */
	public ServicioFicherosConfeccionV01Impl() {
		super();
		try{
			this.baseAddress = ArqSpringContext.getPropiedad("com.bbva.jee.arq.spring.core.wsclient.url.servicioBaseFirmasV01");
		}catch(PropiedadNoEncontradaExcepcion pnee){
			this.baseAddress = "http://localhost:8080/kyfb_mult_web_kyfbws_03/services/rest";
		}
	}
	/**{@inheritDoc}
	 * @see com.bbva.kyfb.firmas.servicios.ServicioFicheroConfeccionV01#getComponentesConfeccionReferencia(com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoFileRequest)
	 */
	@Override
	public InfoFileResponse getComponentesConfeccionReferencia(
			InfoFileRequest info) {
		// Declaración del tipo de respuesta
		InfoFileResponse respuesta = null;
		// Consulta al webservice
		try{
			WebClient cliente = WebClient.create(baseAddress);
			cliente = cliente.path(pathServicioFicherosConfeccionV01+pathGetComponentesConfeccionReferenciaV01);
			respuesta = cliente.post(info, InfoFileResponse.class);
		}catch(Exception e){
			LOG.error("ServicioFirmasBoImpl.getComponentesConfeccionReferencia");
		}
		
		// Devolución de la respuesta
		return respuesta;
	}
	/**{@inheritDoc}
	 * @see com.bbva.kyfb.firmas.servicios.ServicioFicheroConfeccionV01#deleteComponenteConfeccion(com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoToDeleteRequestMaking)
	 */
	@Override
	public DeletedFilesResponse deleteComponenteConfeccion(
			InfoToDeleteRequestMaking info) {
		// Declaración del tipo de respuesta
		DeletedFilesResponse respuesta = new DeletedFilesResponse();
		// Consulta al webservice
		WebClient cliente = WebClient.create(baseAddress);
		cliente = cliente.path(pathServicioFicherosConfeccionV01+pathDeleteComponenteConfeccion);
		respuesta = cliente.post(info, DeletedFilesResponse.class);
		
		// Devolución de la respuesta
		return respuesta;
	}
	/**{@inheritDoc}
	 * @see com.bbva.kyfb.firmas.servicios.ServicioFicheroConfeccionV01#getAuditoriaComponenteConfeccion(com.bbva.kyfb.kyfbdto.firmas.fachada.v01.InfoFileAuditRequest)
	 */
	@Override
	public InfoFileAuditResponse getAuditoriaComponenteConfeccion(
			InfoFileAuditRequest info) {
		// Declaración del tipo de respuesta
		InfoFileAuditResponse respuesta = new InfoFileAuditResponse();
		// Consulta al webservice
		WebClient cliente = WebClient.create(baseAddress);
		cliente = cliente.path(pathServicioFicherosConfeccionV01+pathGetAuditoriaComponenteConfeccion);
		respuesta = cliente.post(info, InfoFileAuditResponse.class);
		
		// Devolución de la respuesta
		return respuesta;
	}
}
